
import sensor, image, time
#sensor引入感光元件
green_threshold   = (30, 100, -77, 9, -2, 32)

sensor.reset()
#初始化感光元件
sensor.set_pixformat(sensor.RGB565)
#设置为彩色
sensor.set_framesize(sensor.QQVGA)
#设置图像的大小#sensor.VGA: 640x480 (只用于OpenMV Cam M7 的灰度图处理图像，或者彩图采集图像)
sensor.skip_frames(time = 2000)
#跳过n张照片，在更改设置后，跳过一些帧，等待感光元件变稳定。
sensor.set_auto_whitebal(False)
#关闭白平衡
clock = time.clock()

from pyb import UART

uart = UART(3, 19200)
#image.find_rects([roi=Auto, threshold=10000])
#使用用于查找AprilTAg的相同的quad detection算法来查找图像中的矩形。 最适用与背景形成鲜明对比的矩形。AprilTag的quad detection可以处理任意缩放/旋转/剪切的矩形。 返回一个 image.rect 对象的列表。
#roi 是一个用以复制的矩形的感兴趣区域(x, y, w, h)。如果未指定， ROI即图像矩形。操作范围仅限于 roi 区域内的像素。
#边界大小（通过在矩形边缘上的所有像素上滑动索贝尔算子并相加该值）小于 threshold 的矩形会从返回列表中过滤出来。 threshold 的正确值取决于您的应用程序/场景。
#不支持压缩图像和bayer图像。
#此方法在OpenMV Cam M4 上不可用。
# 下面的`threshold`应设置为足够高的值，以滤除在图像中检测到的具有
# 低边缘幅度的噪声矩形。最适用与背景形成鲜明对比的矩形。
#roi 是一个用以复制的矩形的感兴趣区域(x, y, w, h)。如果未指定， ROI 即图像矩形。操作范围仅限于roi区域内的像素。
K=450
#常数
while(True):

    clock.tick()
    #开始追踪运行时间
    img = sensor.snapshot().lens_corr(1.8)#畸变矫正
    #拍摄一张照片，img为一个image对象
    blobs = img.find_blobs([green_threshold])

    for r in img.find_rects(threshold = 8000):

        area=(r[0],r[1],r[2],r[3])
        #area为识别到的矩形的区域
        statistics = img.get_statistics(roi=area)
        #像素颜色统计
        if 30<statistics.l_mode()<100 and -77<statistics.a_mode()<9 and -2<statistics.b_mode()<32:
                   img.draw_rectangle(area, color = (0, 255, 0))#将绿的矩形用绿的矩形框出来
                   #print("角度：\nFPS %f" % clock.fps())
                   x=((r[0]+r[2]/2),(r[1]-r[3]/2))
                   #statistics = img.get_statistics(x)#中心点统计
                   Lm = (r[2]+r[3])/2
                   length = K/Lm
                   print("距离：")#单位cm
                   print(length)
                   #print(x)
                   #print(Lm)  # K=Lm*距离  Lm像素点数 25*18
                   #print(r)
                   uart.write("\nl %f" %length)
                   uart.write("\nx  %f" %(r[0]+r[2]/2))
                   uart.write("\ny  %f" %(r[1]-r[3]/2))
                   time.sleep(1000)

       # else:
         #          img.draw_rectangle(area, color = (255, 255, 255))#识别到非绿色的矩形用白的矩形框出来




























